package com.ligongmusic.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import android.util.Log;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

/**
 * Created by Administrator on 2016/10/12.
 */
public class ImgUtils {

    public static int calculateInsampleSize(BitmapFactory.Options options,int reqWidth,int reqHeight){
        final int height=options.outHeight;
        Log.d("JunLog", height+"height");
        final int width=options.outWidth;
        Log.d("JunLog", width+"width");
        int inSampleSize=1;
        if (height>reqHeight||width>reqWidth){
            final int heightRatio=Math.round((float) height/(float) reqHeight);
            Log.d("JunLog", heightRatio+"heightRatio");
            final int widthRatio=Math.round((float) width/(float) reqWidth);
            Log.d("JunLog", widthRatio+"widthRatio");
            inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio;
            Log.d("JunLog", inSampleSize+"inSampleSize");
        }
        return inSampleSize;
    }

    public static Bitmap decodeSampleBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight){
        final BitmapFactory.Options options=new BitmapFactory.Options();
        options.inJustDecodeBounds=true;
        BitmapFactory.decodeResource(res,resId,options);
        options.inSampleSize=calculateInsampleSize(options,reqWidth,reqHeight);
        Log.d("JunLog", options.inSampleSize+"");
        options.inJustDecodeBounds=false;
        return BitmapFactory.decodeResource(res,resId,options);
    }

    public static Bitmap decodeSampleBitmapFromResourceBitMap(Resources res,Bitmap bitmap, int reqWidth, int reqHeight){
        final BitmapFactory.Options options=new BitmapFactory.Options();
        options.inJustDecodeBounds=true;
        options.inSampleSize=calculateInsampleSize(options,reqWidth,reqHeight);
        Log.d("JunLog", options.inSampleSize+"");
        options.inJustDecodeBounds=false;
        return bitmap;
    }


    public static void saveBitmapToSharedPreferences(Context context,Bitmap bitmap){
        //第一步:将Bitmap压缩至字节数组输出流ByteArrayOutputStream
        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream);
        //第二步:利用Base64将字节数组输出流中的数据转换成字符串String
        byte[] byteArray=byteArrayOutputStream.toByteArray();
        String imageString=new String(Base64.encodeToString(byteArray, Base64.DEFAULT));
        //第三步:将String保持至SharedPreferences
        SharedPreferences sharedPreferences=context.getSharedPreferences("testSP", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=sharedPreferences.edit();
        editor.putString("image", imageString);
        editor.commit();
    }



    public static Bitmap getBitmapFromSharedPreferences(Context context){
        SharedPreferences sharedPreferences=context.getSharedPreferences("testSP", Context.MODE_PRIVATE);
        //第一步:取出字符串形式的Bitmap
        String imageString=sharedPreferences.getString("image", "");
        //第二步:利用Base64将字符串转换为ByteArrayInputStream
        byte[] byteArray=Base64.decode(imageString, Base64.DEFAULT);
        ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArray);
        //第三步:利用ByteArrayInputStream生成Bitmap
        Bitmap bitmap=BitmapFactory.decodeStream(byteArrayInputStream);
        return bitmap;
    }
}
